/*
Cover all SDL events, implemented in GEvent.cpp.
What we basically are doing is taking an SDL_Event pointer, 
and switching through the types, and then calling the appropriate function. 
It just looks like a lot since they are quite a bit of events.
*/
#ifndef _GEVENT_H_    
	#define _GEVENT_H_ 

#include "stdafx.h"
#include <SDL.h>

class GEvent
{
public: 
	GEvent();
	virtual ~GEvent();

	virtual void OnEvent(SDL_Event* Event);

	virtual void OnInputFocus(); 

	virtual void OnInputBlur();

	virtual void OnKeyDown(SDLKey sym, SDLMod mod, Uint16 unicode);

	virtual void OnKeyUp(SDLKey sym, SDLMod mod, Uint16 unicode);        
	
	virtual void OnMouseFocus();       
	
	virtual void OnMouseBlur();       
	
	virtual void OnMouseMove(int mX, int mY, int relX, int relY, bool Left,bool Right,bool Middle);   
	
	virtual void OnMouseWheel(bool Up, bool Down);    //Not implemented       

	virtual void OnLButtonDown(int mX, int mY);     
	
	virtual void OnLButtonUp(int mX, int mY);     
	
	virtual void OnRButtonDown(int mX, int mY);     
	
	virtual void OnRButtonUp(int mX, int mY);      
	
	virtual void OnMButtonDown(int mX, int mY);    
	
	virtual void OnMButtonUp(int mX, int mY);     
	
	virtual void OnJoyAxis(Uint8 which, Uint8 axis, Sint16 value);     
	
	virtual void OnJoyButtonDown(Uint8 which, Uint8 button);     
	
	virtual void OnJoyButtonUp(Uint8 which, Uint8 button);      
	
	virtual void OnJoyHat(Uint8 which, Uint8 hat, Uint8 value);    
	
	virtual void OnJoyBall(Uint8 which, Uint8 ball, Sint16 xrel, Sint16 yrel);    
	
	virtual void OnMinimize();       
	
	virtual void OnRestore();      
	
	virtual void OnResize(int w,int h);    
	
	virtual void OnExpose();   
	
	virtual void OnExit();    
	
	virtual void OnUser(Uint8 type, int code, void* data1, void* data2);
};

#endif